﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using SIGCBI.WebMVC4.Models;
using SIGCBI.Entities;
using SIGCBI.BusinessLogic;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using System.Text;
using System.Security.Cryptography;

namespace SIGCBI.WebMVC4.Controllers
{
    public class CentroCostoController : Controller
    {
        [Dependency]
        public ICentroCostoBL centroCostoBL { get; set; }

        [Dependency]
        public ITrabajadorBL trabajadorBL { get; set; }

        public ActionResult Index()
        {
            var centros = centroCostoBL.GetAllFromArea();
            return View(centros);
        }

        [HttpPost]
        public ActionResult Index(string codigo = "", string nombre = "")
        {
            var criterio = "";
            if (codigo != string.Empty)
            {
                criterio = codigo;
            }
            else if (nombre != string.Empty)
            {
                criterio = nombre;
            }

            var centros = centroCostoBL.GetFromAreaByDescripcion(criterio);
            return View(centros);
        }

        public ActionResult Create()
        {
            return PartialView();
        }

        [HttpPost]
        public ActionResult Create(CENTRO_COSTO centro, FormCollection colection)
        {
            //centro.TRABAJADOR = new TRABAJADOR { ApeMaterno = "", ApePaterno = "", Direccion = "", Dni = "", Edad = 0, Email = "", FechaNacimiento = new DateTime(), IdEstadoCivil = 1, IdSexo = 1, Nombres = "", FOTO_TRABAJADOR = new FOTO_TRABAJADOR { Hash = null, Imagen = null, IdTrabajador = centro.IdTrabajador} };
            //if (ModelState.IsValid)
            //{
                var _centro = centroCostoBL.ExisteDuplicidadAreaDescripcion(centro.Codigo, centro.ID);

                if (!_centro)
                {
                    centro.IdTrabajador = 1;
                    centroCostoBL.AddArea(centro);
                    return this.DialogResult("Registro Correcto");  // Close dialog via DialogResult call
                }
                else
                    ModelState.AddModelError("", string.Format("Ya existe un Centro de Costo con la misma información"));
            //}
           return PartialView(centro);
        }

        public ActionResult Edit(int id = 0)
        {
            if (id == 0)
                return this.DialogResult();

            var _partida = centroCostoBL.GetFromAreaById(id);

            if (_partida == null)
                return this.DialogResult();

            return PartialView("Edit", _partida);
        }

        [HttpPost]
        public ActionResult Edit(int id, CENTRO_COSTO centro, FormCollection colection)
        {
            if (ModelState.IsValid)
            {
                var _partida = centroCostoBL.ExisteDuplicidadAreaDescripcion(centro.Codigo, centro.ID);

                if (!_partida)
                {
                    centroCostoBL.UpdateArea(centro);
                    return this.DialogResult("Modificacion Correcta");  // Close dialog via DialogResult call
                }
                else
                    ModelState.AddModelError("", string.Format("Ya existe un Centro de Costo con el mismo Código"));
            }
            return PartialView(centro);
        }

        public ActionResult Details(int id = 0)
        {
            if (id == 0)
                return this.DialogResult();

            var _centro = centroCostoBL.GetFromAreaById(id);

            if (_centro == null)
                return this.DialogResult();

            return PartialView("Details", _centro);
        }

    }
}
